package 初始集合;
//Collection接口

import java.util.*;

/**
 * 1.集合是一个接口；类实现了接口；接口可以创建一个对象的引用（向上转型）。接口后面必须指定类中数据的类型<>
 * 2. Alt+7 查看类的所有方法
 * 3.数组不能整体进行强制类型转换，Collection.toArray()中有体现！
 * 4.注意：Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
 */

public class test {


    //Collection接口
    public static void main1(String[] args) {
        Collection<Integer> collection = new ArrayList();  //向上转型；还可以有Stack、LinkedList、PriorityQueue...

        //测试add()
        collection.add(123);
        collection.add(234);
        collection.add(345);
        System.out.println(collection);

        //测试remove()
        collection.remove(123);
        System.out.println(collection);

        //Collection.toArray()返回值为Object[]类型
        Object[] array = collection.toArray();
        System.out.println(Arrays.toString(array));
        //会报ClassCastException异常
        /*Integer[] array2 =(Integer[]) collection.toArray();
        System.out.println(Arrays.toString(array2));*/

    }

    //Map接口
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(111,"ting");
        map.put(222,"xin");
        map.put(333,"qian");
        System.out.println(map);  //在hash表中按某种函数来存放，顺序不固定！

        //测试getOrDefault()
        String ret = map.getOrDefault("444", "hahahahaNo");
        System.out.println(ret);

        //containsKey()、containValue()返回值为boolean类型
        System.out.println(map.containsKey(111));

        //Set是一个接口，相当于布袋，里面装了从hash中拿出来的key-value对，类型是Map.Entry<Integer, String>;先这么理解吧！
        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
        for (Map.Entry<Integer, String> en : entrySet) {
            System.out.println(en.getKey()+"---"+en.getValue());
        }


    }

}
